<?php
// +----------------------------------------------------------------------
// | YotakuCMS
// +----------------------------------------------------------------------
// | Copyright (c) 2016 http://www.yotaku.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: Creatint <creatint@163.com> 
// +----------------------------------------------------------------------

namespace OT\TagLib;
use Think\Template\TagLib;
/**
 * 文档模型标签库
 */
class Article extends TagLib{
     /**
      * 定义标签列表
      * @var array
      */
     protected $tags   =  array(
         'partlist' => array('attr' => 'id,field,page,name', 'close' => 1), //段落列表
         'partpage' => array('attr' => 'id,listrow', 'close' => 0), //段落分页
         'prev'     => array('attr' => 'name,info', 'close' => 1), //获取上一篇文章信息
         'next'     => array('attr' => 'name,info', 'close' => 1), //获取下一篇文章信息
         'page'     => array('attr' => 'cate,listrow', 'close' => 1), //列表分页
         'position' => array('attr' => 'pos,cate,limit,filed,name', 'close' => 1), //获取推荐位列表
         'list'     => array('attr' => 'name,category,child,page,row,field', 'close' => 1), //获取指定分类列表
         'link'     => array('attr' => 'name,category,child,page,row,field', 'close' => 1), //获取指定分类列表
     );
     public function _link($tag, $content){
          $name   = $tag['name'];
          $cate   = $tag['category'];
          $child  = empty($tag['child']) ? 'false' : $tag['child'];
          $row    = empty($tag['row'])   ? '10' : $tag['row'];
          $field  = empty($tag['field']) ? 'true' : $tag['field'];

          $parse  = '<?php ';
          $parse .= '$__CATE__ = D(\'Category\')->getChildrenId('.$cate.');';
          $parse .= '$__LIST__ = D(\'DocumentLink\')->page(!empty($_GET["p"])?$_GET["p"]:1,'.$row.')->lists(';
          $parse .= '$__CATE__, \'`level` DESC,`update_time` DESC,`id` DESC\', 1,';
          $parse .= $field . ');';
          $parse .= ' ?>';
          $parse .= '<volist name="__LIST__" id="'. $name .'">';
          $parse .= $content;
          $parse .= '</volist>';
          return $parse;
     }

     public function _list($tag, $content){
          $name   = $tag['name'];
          $cate   = $tag['category'];
          $child  = empty($tag['child']) ? 'false' : $tag['child'];
          $row    = empty($tag['row'])   ? '10' : $tag['row'];
          $field  = empty($tag['field']) ? 'true' : $tag['field'];

          $parse  = '<?php ';
          $parse .= '$__CATE__ = D(\'Category\')->getChildrenId('.$cate.');';
          $parse .= '$__LIST__ = D(\'Document\')->page(!empty($_GET["p"])?$_GET["p"]:1,'.$row.')->lists(';
          $parse .= '$__CATE__, \'`level` DESC,`update_time` DESC,`id` DESC\', 1,';
          $parse .= $field . ');';
          $parse .= ' ?>';
          $parse .= '<volist name="__LIST__" id="'. $name .'">';
          $parse .= $content;
          $parse .= '</volist>';
          return $parse;
     }

     /* 推荐位列表 */
     public function _position($tag, $content){
          $pos    = $tag['pos'];
          $cate  = empty($tag['cate']) ? '0' : $tag['cate'];
          $limit  = empty($tag['limit']) ? 'null' : $tag['limit'];
          $field  = empty($tag['field']) ? 'true' : $tag['field'];
          $name   = $tag['name'];
          $parse  = '<?php ';
          $parse .= '$__POSLIST__ = D(\'Document\')->position(';
          $parse .= $pos . ',';
          $parse .= $cate . ',';
          $parse .= $limit . ',';
          $parse .= $field . ');';
          $parse .= ' ?>';
          $parse .= '<volist name="__POSLIST__" id="'. $name .'">';
          $parse .= $content;
          $parse .= '</volist>';
          return $parse;
     }

     /* 列表数据分页 */
     public function _page($tag, $content){
          $cate    = $tag['cate'];
          $listrow = $tag['listrow'];
          $parse   = '<?php ';
          $parse  .= '$__PAGE__ = new \Think\Page(get_list_count(' . $cate . '), ' . $listrow . ');';
          $parse  .= $content;
          $parse  .= 'echo $__PAGE__->show();';
          $parse  .= ' ?>';
          return $parse;
     }

     /* 获取下一篇文章信息 */
     public function _next($tag, $content){
          $name   = $tag['name'];
          $info   = $tag['info'];
          $parse  = '<?php ';
          $parse .= '$' . $name . ' = D(\'Document\')->next($' . $info . ');';
          $parse .= ' ?>';
          $parse .= $content;
          return $parse;
     }

     /* 获取上一篇文章信息 */
     public function _prev($tag, $content){
          $name   = $tag['name'];
          $info   = $tag['info'];
          $parse  = '<?php ';
          $parse .= '$' . $name . ' = D(\'Document\')->prev($' . $info . ');';
          $parse .= ' ?>';
          $parse .= $content;
          return $parse;
     }

     /* 段落数据分页 */
     public function _partpage($tag){
          $id      = $tag['id'];
          if ( isset($tag['listrow']) ) {
               $listrow = $tag['listrow'];
          }else{
               $listrow = 10;
          }
          $parse   = '<?php ';
          $parse  .= '$__PAGE__ = new \Think\Page(get_part_count(' . $id . '), ' . $listrow . ');';
          $parse  .= 'echo $__PAGE__->show();';
          $parse  .= ' ?>';
          return $parse;
     }

     /* 段落列表 */
     public function _partlist($tag, $content){
          $id     = $tag['id'];
          $field  = $tag['field'];
          $name   = $tag['name'];
          if ( isset($tag['listrow']) ) {
               $listrow = $tag['listrow'];
          }else{
               $listrow = 10;
          }
          $parse  = '<?php ';
          $parse .= '$__PARTLIST__ = D(\'Document\')->part(' . $id . ',  !empty($_GET["p"])?$_GET["p"]:1, \'' . $field . '\','. $listrow .');';
          $parse .= ' ?>';
          $parse .= '<?php $page=(!empty($_GET["p"])?$_GET["p"]:1)-1; ?>';
          $parse .= '<volist name="__PARTLIST__" id="'. $name .'">';
          $parse .= $content;
          $parse .= '</volist>';
          return $parse;
     }
}